﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEMPRESENTACION
{
    public partial class frmProductoRegistrado : Form
    {
        public frmProductoRegistrado()
        {
            InitializeComponent();
        }
        public Interfaz Manipular { set; get; }
        Producto elProducto = new Producto();
        ProductoBL elProductoBL = new ProductoBL();
        private void CargarListaProductos() {
            if (dgvListaProducto.DataSource == null) {
                dgvListaProducto.DataSource = elProductoBL.ObtenerProductosRegistrados();
                filtrador.DataSource = elProductoBL.ObtenerProductosRegistrados();
            }
        }

        private void frmProductoRegistrado_Load(object sender, EventArgs e)
        {
            try
            {
                CargarListaProductos();
                txtBuscarProd.Select();                
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        private void AplicarFiltro()
        {
                int ret = filtrar_dgvListaProducto("Producto", txtBuscarProd.Text.Trim(), filtrador, dgvListaProducto);
                if (ret == 0)
                {
                    txtBuscarProd.BackColor = Color.Red;
                }
                else
                {
                    txtBuscarProd.BackColor = Color.White;
                }
        }
        private int filtrar_dgvListaProducto(String Columna, String texto, BindingSource Binding, DataGridView data)
        {
            if (filtrador.DataSource == null) { return 0; }
            try
            {
                String filtro = String.Empty;
                filtro = "LIKE '%" + texto.Trim() + "%'";
                if (filtro != String.Empty)
                {
                    filtro = "[" + Columna + "]" + filtro;
                }
                Binding.Filter = filtro;
                data.DataSource = Binding.DataSource;
                return Binding.Count;                
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return 0;
        }

        private void txtBuscarProd_TextChanged(object sender, EventArgs e)
        {
            try
            {
                AplicarFiltro();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void dgvListaProducto_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                Int32 Nrofila = Int32.Parse(e.RowIndex.ToString());                
                if (Application.OpenForms["frmProductoRegistrado"] != null)
                {
                    this.Manipular.CargardatosProducto(Convert.ToString(dgvListaProducto["Producto", Nrofila].Value), "","", Convert.ToString(dgvListaProducto["Codigo", Nrofila].Value));
                    this.Close();
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void dgvListaProducto_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                List<Producto> lista;
                Int32 fila = Int32.Parse(e.RowIndex.ToString());
                lista = elProductoBL.ObtenerImagenProducto(Convert.ToInt32(dgvListaProducto["Codigo", fila].Value));
                foreach (Producto filas in lista)
                {
                    Byte[] data = (Byte[])(filas.Imagen);
                    Stream ima = new MemoryStream(data);
                    this.pbProducto.Image = Image.FromStream(ima);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }


        private void dgvListaProducto_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                List<Producto> lista;
                Int32 fila = Int32.Parse(e.RowIndex.ToString());
                lista = elProductoBL.ObtenerImagenProducto(Convert.ToInt32(dgvListaProducto["Codigo", fila].Value));
                foreach (Producto filas in lista)
                {
                    Byte[] data = (Byte[])(filas.Imagen);
                    Stream ima = new MemoryStream(data);
                    this.pbProducto.Image = Image.FromStream(ima);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
